/**
 * 每条指令的属性
 */
export interface CommandType {
    id: string,
    label: string, // 指令名称
    deviceName: string, // 设备名称
    type: string,  // 类型,
    value: null, // 指令`名称
    exclude_params: Array<string>,  // 排除编辑的字段
    remark: string | null,  // 备注
    loadBar: undefined | HTMLElement // 该指令的加载条元素
    loadingBar: null | Object
    relationshipField: Array<string>,
}

/**
 * 用于定义每个设备的属性
 */
export interface DeviceType {
    deviceName: string,
    type: string,
    // 排除输入的字段(帧头, 帧尾, 校验和...)
    exclude_params: Array<String>,
    // 该设备的所有指令{名称:指令参数}
    options: Array<{ label: string; value: CommandParamsType }>
}

/**
 * 指令参数的属性
 */
export interface CommandParamsType {
    "name": string,
    "bit_length": string | number,
    "type": string,
    "default": string | number,
    "min": null | number,
    "max": null | number,
    "handler_func": null | string,
    "enum": null | { [key: string]: string };
}

/**
 * 单条遥测所有属性
 */
export interface TelemetryType {
    // 一整条遥测的源码
    sourceCode: string,
    // 解析后的各项数据
    parsedData: Array<TelemetryParserType>,
    dateTime: string,
}

/**
 * 解析后遥测构成
 */
export interface TelemetryParserType {
    // 遥测名称
    "label": string,
    // 显示值
    "value": string | number,
    // 原始值
    "raw": number,
    // 源码
    "sourceCode": string,
    // 位长度
    "bitLength": number
}